package com.e_library.dao.classes;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import com.e_library.jpa.entities.Livre;
import com.e_library.jpa.entities.Main;
import com.e_library.jpa.entities.Rayon;


public class LivreDaoImpl implements LivreIDao{

	private EntityManager em;
    public LivreDaoImpl() {
    	Main m=new Main();
          em=m.em;
          em.getTransaction().begin();
	}
	 public void deleteOne(String id) {
		 Livre  livre= em.find(Livre.class, id);
	 if (livre == null) {
	throw new DaoException(2);
	}
	em.remove(livre);
	 em.getTransaction().commit();
	 }
	
	@SuppressWarnings("unchecked")
  public List<Livre> getAll() {
	 return em.createQuery("select p from Livre p").getResultList();
	 }
	
	 @SuppressWarnings("unchecked")
	 public List<Livre> getAllLike(String modele) {
	 return em.createQuery("select p from Livre p where p.titre like :modele")
	 .setParameter("modele", modele).getResultList();
	 }
	
	 @SuppressWarnings("unchecked")
	 public List<Livre> getAllLikeRT(Rayon modele, String titre) {
		 return em.createQuery("select p from Livre p where p.nomrayon like :modele and p.titre like :titre")
		 .setParameter("modele", modele.getNomRayon())
		 .setParameter("titre", titre)
		 .getResultList();
		 }
	 
	 
	 public Livre getOne(String id) {
	 return em.find(Livre.class, id);
	 }
	

	 public Livre saveOne(Livre livre) {
	 em.persist(livre);
	 em.getTransaction().commit();
	 return livre;
}
	
	 
	 public Livre updateOne(Livre livre) {
		Livre livre2= em.merge(livre);
	 em.getTransaction().commit();
	 return livre2;
	 }
	
}
